/**
  ES6 对象 新增的静态方法：
    Object.assign(target, source1, source2, ...)
    作用：用于对象的合并，将源对象（source）的所有可枚举属性，
             复制到目标对象（target）上
             将多个源对象合并到一个目标对象上，返回合并后的对象
    特点：
    1. 如果目标对象与源对象有同名属性，
             或多个源对象有同名属性，则后面的属性会覆盖前面的属性
   2.  Object.assign()方法实行的是浅拷贝，而不是深拷贝。
        也就是说，如果源对象某个属性的值是对象，
        那么目标对象拷贝得到的是这个对象的引用。

    场景：
      1.   浅拷贝对象
      2.  对象的合并
 */

const o1 = {
  name: '宋轶',
  height: 168
}
const o2 = {
  name: '小轶轶',
  gender: 'female',
  birthPlace: '湖北荆门'
}
// 1. 把 o2的属性合并到 o1上
// const target = Object.assign(o1, o2)
// console.log(target)
// console.log(o1)
// console.log(Object.is(target, o1))// ? true
// console.log(o2)
// 2.把o1、o2的属性进行合并，并且不能改变o1、o2
const target = Object.assign({}, o1, o2)
// console.log(target)
// console.log(o1)
// console.log(o2)

const obj = {
  a: 1,
  b: 2,
  c: {
    d: 3,
    e: 4
  }
}
// 3. 把obj复制一份
const clone = Object.assign({}, obj)
clone.c.d = 99
console.log(obj)


